bitkeeper revision 1.1159.1.314 (418442e0ulgOgW7-GQoSm-dOij6jwg)
authormark@maw48.kings.cam.ac.uk <mark@maw48.kings.cam.ac.uk>
Sun, 31 Oct 2004 01:41:52 +0000 (01:41 +0000)
committermark@maw48.kings.cam.ac.uk <mark@maw48.kings.cam.ac.uk>
Sun, 31 Oct 2004 01:41:52 +0000 (01:41 +0000)
Add dmesg clear op.

BitKeeper/etc/logging_ok
tools/python/xen/xend/XendClient.py
tools/python/xen/xend/XendDmesg.py
tools/python/xen/xend/server/SrvDmesg.py
tools/python/xen/xm/main.py

index c3c6bd3ef7ba321790d904a79d37a2191071e77d..9f847bcf91b6acd1eaa5f231ea8e8bb3df579ab4 100644 (file)
@@ -32,6 +32,7 @@ kaf24@striker.cl.cam.ac.uk
 laudney@eclipse.(none)
 lynx@idefix.cl.cam.ac.uk
 mafetter@fleming.research
+mark@maw48.kings.cam.ac.uk
 maw48@labyrinth.cl.cam.ac.uk
 mjw@wray-m-3.hpl.hp.com
 mwilli2@equilibrium.research
index 82b2dbde81ed6eb1511f748c930c9524a6a4ed1d..8290165412f48a77c595a2efa9ad4f4e9eb23cd3 100644 (file)
@@ -179,8 +179,12 @@ class Xend:
         return self.xendPost(self.nodeurl(),
                              {'op'      : 'reboot'})
 
-    def xend_node_dmesg(self):
-        return self.xendGet(self.nodeurl('dmesg'))
+    def xend_node_get_dmesg(self):
+            return self.xendGet(self.nodeurl('dmesg'))
+
+    def xend_node_clear_dmesg(self):
+        return self.xendPost(self.nodeurl('dmesg'),
+                             {'op' : 'clear' } )
 
     def xend_node_log(self):
         return self.xendGet(self.nodeurl('log'))
index 8d070ba45a86a80e7560f472d9e0db94f5a027ea..6201b721dbe315ebce0534faba554d445710a657 100644 (file)
@@ -12,7 +12,9 @@ class XendDmesg:
 
     def info(self):
         return self.xc.readconsolering()
-        
+
+    def clear(self):
+        self.xc.readconsolering(True)
 
 def instance():
     global inst
index 2e7b538c55319748ac329a72b10f2020e17b82e5..96a392484f483e72e8a57675659752b84585bd06 100644 (file)
@@ -15,6 +15,9 @@ class SrvDmesg(SrvDir):
         SrvDir.__init__(self)
         self.xd = XendDmesg.instance()
 
+    def render_POST(self, req):
+        self.perform(req)
+
     def render_GET(self, req):
         try:
             if self.use_sxp(req):
@@ -32,3 +35,6 @@ class SrvDmesg(SrvDir):
             
     def info(self):
         return self.xd.info()
+
+    def op_clear(self):
+        self.xd.clear()
index 2d40669e23e5fb09319049432d3c8f6015f43f74..0b6e37966fcc90aed72302a9f86d1d162b265053 100644 (file)
@@ -665,7 +665,12 @@ class ProgDmesg(Prog):
     info  = """Print Xen boot output."""
 
     def main(self, args):
-        print server.xend_node_dmesg()
+        if len(args) == 1:
+            print server.xend_node_dmesg(clear)
+        if len(args) > 1:
+            if len(args) == 2 and args[1] == '-c':
+                print server.xend_node_clear_dmesg()
+            else: self.err("%s: Invalid argument" % args[0])
 
 xm.prog(ProgDmesg)
 
@@ -726,7 +731,7 @@ class ProgVbdCreate(Prog):
 Create a virtual block device for a domain.
 
   UNAME   - device to export, e.g. phy:hda2
-  DEV     - device name in the domain, e.g. xda1
+  DEV     - device name in the domain, e.g. sda1
   MODE    - access mode: r for read, w for read-write
   BACKEND - backend driver domain
 """